Graph Database হল ArangoDB-এর অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডেটার মধ্যে সম্পর্ক বিশ্লেষণ এবং পরিচালনার জন্য ব্যবহৃত হয়। ArangoDB গ্রাফ ডেটাবেসের জন্য শক্তিশালী Edge-Vertex মডেল এবং AQL কোয়েরি প্রদান করে, যা জটিল সম্পর্কযুক্ত ডেটার পরিচালনাকে সহজ এবং কার্যকর করে তোলে।
গ্রাফ ডেটাবেস হল এমন একটি ডেটা মডেল যেখানে ডেটা Vertex (নোড) এবং সম্পর্ক Edge (লাইন বা সংযোগ) দিয়ে উপস্থাপন করা হয়।
INSERT { _key: "person1", name: "Rahim", age: 30 } INTO vertices
INSERT { _from: "vertices/person1", _to: "vertices/person2", relationship: "friend" } INTO edges
FOR v, e, p IN 1..3 OUTBOUND "vertices/person1" edges
RETURN v
person1
থেকে ১-৩ স্তরের গভীরতায় আউটবাউন্ড সংযোগ খুঁজে বের করে।INSERT { _key: "user1", name: "Aisha" } INTO users
INSERT { _key: "user2", name: "Karim" } INTO users
INSERT { _from: "users/user1", _to: "users/user2", relationship: "friend" } INTO friendships
FOR v IN 1..1 OUTBOUND "users/user1" friendships
RETURN v.name
user1
এর বন্ধুদের নাম ফিরিয়ে দেবে।FOR v, e IN OUTBOUND SHORTEST_PATH "vertices/start" TO "vertices/end" edges
RETURN v
FOR v, e IN ANY "vertices/person1" edges
FILTER e.relationship == "friend"
RETURN v
ArangoDB-তে গ্রাফ ডেটাবেস জটিল সম্পর্ক বিশ্লেষণের জন্য একটি শক্তিশালী সমাধান। এর Vertex-Edge মডেল এবং AQL সমর্থন এটি ডেভেলপারদের জন্য সহজ এবং কার্যকর করে তুলেছে। গ্রাফ ট্রাভার্সাল, শর্টেস্ট পাথ, এবং রিলেশনাল অ্যানালাইসিসের জন্য ArangoDB একটি উন্নত ডেটাবেস মডেল।
গ্রাফ ডেটাবেস এমন একটি ডেটাবেস মডেল যা নোড (Node) এবং এজ (Edge) এর মাধ্যমে ডেটা এবং ডেটার সম্পর্ক সংরক্ষণ করে। ArangoDB তার মাল্টি-মডেল আর্কিটেকচারের একটি অংশ হিসেবে গ্রাফ ডেটাবেস সমর্থন করে, যেখানে ডেটার মধ্যে সম্পর্কগুলো দক্ষতার সাথে পরিচালনা করা যায়। এটি বিশেষ করে সোশ্যাল নেটওয়ার্ক, রিকমেন্ডেশন সিস্টেম, এবং জটিল নেটওয়ার্ক অ্যানালাইসিসের জন্য ব্যবহৃত হয়।
db._create("Users")
db._createEdgeCollection("Friends")
db.Users.insert({ _key: "user1", name: "Alice" })
db.Users.insert({ _key: "user2", name: "Bob" })
db.Friends.insert({ _from: "Users/user1", _to: "Users/user2" })
FOR v, e, p IN 1..2 OUTBOUND "Users/user1" GRAPH "myGraph"
RETURN v
ArangoDB তে গ্রাফ ডেটাবেস ডেটার মধ্যে জটিল সম্পর্কগুলো সহজ এবং দ্রুত বিশ্লেষণের জন্য একটি শক্তিশালী সমাধান। এর Vertex এবং Edge Collections, AQL কোয়েরি ভাষা, এবং সহজ ট্রাভার্সাল প্রক্রিয়া এটি জটিল নেটওয়ার্ক এবং সম্পর্কিত ডেটার জন্য অত্যন্ত কার্যকরী করে তুলেছে।
ArangoDB তে Vertex (নোড) এবং Edge (সম্পর্ক) ব্যবহার করে গ্রাফ ডেটা মডেলিং করা হয়। Vertex হলো ডেটার উপস্থাপন এবং Edge হলো Vertex গুলোর মধ্যে সম্পর্ক নির্দেশ করে। ArangoDB তে এই উপাদানগুলো তৈরির জন্য Document Collections এবং Edge Collections ব্যবহার করা হয়।
১. একটি Document Collection তৈরি করুন
CREATE COLLECTION "vertices"
এটি vertices
নামে একটি Document Collection তৈরি করে।
২. Vertex ডেটা যোগ করুন
INSERT {
_key: "vertex1",
name: "Node A",
type: "Category"
} INTO vertices
এটি vertices
Collection এ একটি Vertex যোগ করে, যেখানে _key
ডেটার একটি অনন্য আইডেন্টিফায়ার।
৩. একাধিক Vertex যোগ করুন
INSERT { _key: "vertex2", name: "Node B", type: "Item" } INTO vertices
INSERT { _key: "vertex3", name: "Node C", type: "Item" } INTO vertices
এটি একই Collection এ আরও Vertex যোগ করে।
১. একটি Edge Collection তৈরি করুন
CREATE COLLECTION "edges" TYPE EDGE
এটি edges
নামে একটি Edge Collection তৈরি করে, যেখানে TYPE EDGE
নির্দেশ করে এটি Edge স্টোর করার জন্য ব্যবহৃত হবে।
২. Edge ডেটা যোগ করুন
INSERT {
_from: "vertices/vertex1",
_to: "vertices/vertex2",
relation: "connected_to"
} INTO edges
এটি vertex1
এবং vertex2
এর মধ্যে একটি সম্পর্ক তৈরি করে। _from
এবং _to
ফিল্ডে সংশ্লিষ্ট Vertex এর _key
উল্লেখ করতে হবে।
৩. একাধিক Edge যোগ করুন
INSERT { _from: "vertices/vertex2", _to: "vertices/vertex3", relation: "linked_to" } INTO edges
INSERT { _from: "vertices/vertex1", _to: "vertices/vertex3", relation: "related_to" } INTO edges
এটি আরও দুটি Edge তৈরি করে, যা Vertex গুলোর মধ্যে সম্পর্ক নির্দেশ করে।
ArangoDB তে একটি Graph তৈরি করতে Graph API ব্যবহার করা হয়। এটি Edge এবং Vertex Collection সমন্বিতভাবে কাজ করে।
১. একটি গ্রাফ তৈরি করুন
CREATE GRAPH "myGraph"
OPTIONS {
edgeDefinitions: [
{ collection: "edges",
from: ["vertices"],
to: ["vertices"]
}
]
}
এটি myGraph
নামে একটি গ্রাফ তৈরি করে, যেখানে vertices
Collection Vertex গুলো ধারণ করে এবং edges
Collection Edge গুলো পরিচালনা করে।
১. একটি গ্রাফ ট্রাভার্সাল চালান
FOR v, e IN 1..2 OUTBOUND "vertices/vertex1" GRAPH "myGraph"
RETURN { vertex: v, edge: e }
এটি vertex1
থেকে এক বা দুই স্তরের মধ্যে সমস্ত Vertex এবং তাদের সম্পর্কিত Edge গুলো ফেরত দেয়।
ArangoDB তে Vertex এবং Edge তৈরি করা সহজ এবং কার্যকর। Vertex ডেটা উপস্থাপন করে, আর Edge সম্পর্ক নির্ধারণ করে। Document এবং Edge Collection তৈরি করার মাধ্যমে জটিল গ্রাফ ডেটা মডেলিং সম্ভব হয়, যা ডেটার জটিল সম্পর্ক বিশ্লেষণে সহায়ক।
Graph Traversal Queries ArangoDB-তে গ্রাফ ডেটার মধ্যে সম্পর্ক বুঝতে এবং প্রাসঙ্গিক তথ্য অনুসন্ধানের জন্য ব্যবহৃত হয়। ArangoDB তে গ্রাফ ডেটাবেসে Vertex (নোড) এবং Edge (লিঙ্ক) ব্যবহার করে ডেটা মডেল করা হয়। AQL (ArangoDB Query Language) এর মাধ্যমে গ্রাফ ট্রাভার্সাল করা যায়।
Traversal মানে হলো একটি Graph এর নোড বা ভের্টেক্স থেকে একটি নির্দিষ্ট পথ অনুসরণ করে ডেটা বের করা। এটি সাধারণত বিভিন্ন লেভেল বা দূরত্বের সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়।
FOR vertex, edge, path IN min..max
OUTBOUND start_vertex edge_collection
RETURN vertex
min..max
: ট্রাভার্সাল গভীরতার সীমা।OUTBOUND
: সংযোগের দিক নির্দেশ করে। (Inbound/Outbound/Both)start_vertex
: ট্রাভার্সাল শুরু করার নোড।edge_collection
: সংযোগগুলো সংরক্ষিত যেখানে।RETURN
: ফলাফল হিসেবে কোন উপাদান চাই তা নির্ধারণ করে।নিচের উদাহরণে friends
একটি Edge Collection, যা সংযোগ সংরক্ষণ করে।
FOR vertex IN 1..1
OUTBOUND "users/user1" friends
RETURN vertex
এটি user1
এর direct friends খুঁজে বের করবে।
FOR vertex IN 2..3
OUTBOUND "users/user1" friends
RETURN vertex
এটি user1
থেকে দ্বিতীয় এবং তৃতীয় লেভেলের সংযুক্ত vertex রিটার্ন করবে।
FOR vertex, edge, path IN 1..2
OUTBOUND "users/user1" friends
RETURN { vertex, edge, path }
এটি Vertex, Edge, এবং Path এর সম্পূর্ণ তথ্য প্রদান করবে।
FOR vertex IN 1..1
INBOUND "users/user1" friends
RETURN vertex
এটি user1
এর সাথে incoming connections খুঁজে বের করবে।
FOR vertex IN 1..1
ANY "users/user1" friends
RETURN vertex
এটি user1
এর incoming এবং outgoing connections উভয়ই রিটার্ন করবে।
Traversed ডেটাতে নির্দিষ্ট শর্ত প্রয়োগ করার জন্য FILTER ব্যবহার করা হয়।
FOR vertex IN 1..2
OUTBOUND "users/user1" friends
FILTER vertex.age > 25
RETURN vertex
এটি user1
এর ১ থেকে ২ লেভেলের বন্ধুদের মধ্যে যাদের বয়স ২৫ এর বেশি তাদের রিটার্ন করবে।
FOR vertex IN 1..1
OUTBOUND "users/user1" friends
COLLECT WITH COUNT INTO total
RETURN total
এটি user1
এর মোট সরাসরি সংযুক্ত Vertex সংখ্যা রিটার্ন করবে।
FOR vertex, edge IN 1..1
OUTBOUND "users/user1" friends
RETURN edge.relationship
এটি সংযোগের Edge Attributes (যেমন: সম্পর্কের ধরণ) রিটার্ন করবে।
ArangoDB এর Web Interface ব্যবহার করে ট্রাভার্সালের ফলাফল সহজে ভিজুয়ালাইজ করা যায়। Traversal কোয়েরি চালানোর পর, Web Interface এ গ্রাফিকাল আউটপুট দেখা যাবে।
Graph Traversal Queries ArangoDB তে গ্রাফ ডেটার মধ্যকার সম্পর্ক বিশ্লেষণ করতে এবং জটিল গ্রাফ অপারেশন সম্পাদন করতে সাহায্য করে। AQL এর সহজ এবং শক্তিশালী গঠন এটি কার্যকরভাবে পরিচালনা করতে সহায়তা করে।
ArangoDB Query Language (AQL) ব্যবহার করে গ্রাফের ডেটা পরিচালনা করা এবং বিভিন্ন গ্রাফ অপারেশন চালানো সম্ভব। ArangoDB এর গ্রাফ মডেলটি মূলত Vertex (নোড) এবং Edge (সম্পর্ক) এর মাধ্যমে তৈরি হয়। AQL ব্যবহার করে গ্রাফ traversal, shortest path, এবং আরও জটিল অপারেশন সম্পন্ন করা যায়।
গ্রাফ ট্র্যাভার্সাল হলো একটি নোড থেকে শুরু করে সংশ্লিষ্ট নোড এবং এজগুলোর উপর ভিত্তি করে ডেটা অনুসন্ধান।
FOR vertex, edge, path
IN 1..3 OUTBOUND "vertices/startNode"
GRAPH "myGraph"
RETURN { vertex, edge, path }
ব্যাখ্যা:
1..3
: গ্রাফের ১ থেকে ৩ লেভেল গভীরতা পর্যন্ত ট্র্যাভার্স করবে।OUTBOUND
: নোড থেকে বের হওয়া এজ অনুসরণ করবে।"vertices/startNode"
: ট্র্যাভার্সাল শুরু হবে startNode
থেকে।GRAPH "myGraph"
: myGraph
গ্রাফের উপর অপারেশনটি চালানো হবে।vertex
, edge
, এবং path
: রিটার্নের জন্য ভেরটেক্স, এজ এবং সম্পূর্ণ পাথ।একটি নোড থেকে শুধু বের হওয়া এজগুলো অনুসরণ করে।
FOR vertex IN 1..2 OUTBOUND "vertices/startNode" GRAPH "myGraph"
RETURN vertex
একটি নোডে প্রবেশ করা এজগুলো অনুসরণ করে।
FOR vertex IN 1..2 INBOUND "vertices/startNode" GRAPH "myGraph"
RETURN vertex
নোড থেকে প্রবেশ এবং বের হওয়া উভয় ধরনের এজ অনুসরণ করে।
FOR vertex IN 1..2 ANY "vertices/startNode" GRAPH "myGraph"
RETURN vertex
নোডগুলোর মধ্যে সবচেয়ে ছোট পথ (shortest path) বের করার জন্য AQL ব্যবহার করা হয়।
FOR v, e
IN OUTBOUND SHORTEST_PATH "vertices/startNode" TO "vertices/endNode"
GRAPH "myGraph"
RETURN { vertex: v, edge: e }
ব্যাখ্যা:
SHORTEST_PATH
: দুই নোডের মধ্যে সবচেয়ে ছোট পথ খুঁজে বের করে।"vertices/startNode"
এবং "vertices/endNode"
: শুরু এবং শেষ নোড।OUTBOUND
: এজের দিক নির্দেশনা।ট্র্যাভার্সালের সময় শর্ত প্রয়োগ করে নির্দিষ্ট ডেটা অনুসন্ধান করা।
FOR vertex, edge
IN 1..3 OUTBOUND "vertices/startNode" GRAPH "myGraph"
FILTER edge.type == "follows"
RETURN vertex
ব্যাখ্যা:
FILTER edge.type == "follows"
: শুধুমাত্র type
ফিল্ডের মান "follows"
হলে ডেটা রিটার্ন করবে।গ্রাফের এজ সংগ্রহ থেকে সরাসরি ডেটা রিটার্ন করতে পারেন।
FOR edge IN edges
FILTER edge.weight > 10
RETURN edge
ব্যাখ্যা:
weight
> 10, সেগুলো রিটার্ন করবে।গ্রাফ ডেটার উপর নির্দিষ্ট সংখ্যামূলক অ্যানালাইসিস করা।
FOR vertex IN vertices
COLLECT WITH COUNT INTO totalVertices
RETURN totalVertices
ট্র্যাভার্সাল পাথ সহ বিস্তারিত ফলাফল পেতে পারেন।
FOR vertex, edge, path
IN 1..3 OUTBOUND "vertices/startNode" GRAPH "myGraph"
RETURN path
ব্যাখ্যা:
path
: ট্র্যাভার্সাল পাথের বিস্তারিত প্রদান করবে।গ্রাফের একাধিক নোড এবং এজের মধ্যে জটিল সম্পর্ক নির্ণয় করতে সাবকোয়েরি ব্যবহার করা যায়।
FOR v, e, p
IN 1..3 OUTBOUND "vertices/startNode" GRAPH "myGraph"
FILTER v.age > 30
RETURN { name: v.name, path: p }
AQL দিয়ে গ্রাফ অপারেশন ArangoDB-কে জটিল সম্পর্ক বিশ্লেষণের জন্য একটি শক্তিশালী টুল তৈরি করে। Traversal, Shortest Path, এবং Filtering এর মতো বৈশিষ্ট্যগুলো বড় গ্রাফ ডেটাবেসের মধ্যে দ্রুত এবং কার্যকর ডেটা অনুসন্ধান করতে সহায়ক।
common.read_more